<?php
App::uses('AppController', 'Controller');
App::uses('FileValidation', 'Lib');
App::uses('TexChange', 'Lib');
/**
 * CoordenadorTrabalhos Controller
 *
 * @property CoordenadorTrabalho $CoordenadorTrabalho
 */
class CoordenadorTrabalhosController extends AppController {

/**
 * index method
 *
 * @return void
 */
	public function index($categoria = null) {
		$this->set('categorias', $this->CoordenadorTrabalho->Categoria->find('list'));
		if($categoria != null){
			$this->set('usuarios_coordenadores', $this->CoordenadorTrabalho->find('list', array('conditions'=>array('categoria_id'=>$categoria), 'fields'=>'usuario_id')));
			$this->set('usuarios', $this->CoordenadorTrabalho->Usuario->find('list', array('order'=>array('nome ASC'))));
			$this->set('categoria', $categoria);
			$this->render('index_usuarios');
		}
	}

/**
 * add method
 *
 * @return void
 */
	public function add($user_id) {
		if($this->isAdmin()){
			if ($this->request->is('post')) {
				$this->request->data['CoordenadorTrabalho']['usuario_id'] = $user_id;
				if($this->CoordenadorTrabalho->save($this->request->data)){
					$this->Session->setFlash(__('Coordenador salvo com sucesso!'), 'flash/bootstrap', array('class'=>'alert alert-success'));
				}
				else{
					$this->Session->setFlash(__('Coordenador não foi salvo!'), 'flash/bootstrap', array('class'=>'alert alert-danger'));
				}
			}
			$coordenacao = $this->CoordenadorTrabalho->findAllByUsuarioId($user_id);
			$categorias = $this->CoordenadorTrabalho->Categoria->find('list');
			$this->set(compact('categorias', 'coordenacao'));
		}
	}

/**
 * delete method
 *
 * @throws NotFoundException
 * @param string $id
 * @return void
 */
	public function delete($id, $user_id) {
		$this->CoordenadorTrabalho->id = $id;
		if (!$this->CoordenadorTrabalho->exists()) {
			throw new NotFoundException(__('Invalid coordenador trabalho'));
		}
		if ($this->CoordenadorTrabalho->delete()) {
			$this->Session->setFlash(__('Coordenador trabalho deleted'));
			$this->redirect(array('action' => 'add', $user_id));
		}
		$this->Session->setFlash(__('Coordenador trabalho was not deleted'));
		$this->redirect(array('action' => 'add', $user_id));
	}
	
	public function comprovante_de_coordenacao($coord_id) {
		$dado = $this->CoordenadorTrabalho->findById($coord_id);
		$usuario = $this->CoordenadorTrabalho->Usuario->findById($this->usuarioSessao['Usuario']['id']);
		if($dado['Usuario']['id'] == $this->usuarioSessao['Usuario']['id']){
			
			$fileVal = new FileValidation(FILE_VALIDATION_APPID, FILE_VALIDATION_HASH);
			if($dado['CoordenadorTrabalho']['comprovante'] == NULL){
				
				$texChange = new TexChange();
				$this->loadModel('Data');
				$data_inicio = $this->Data->getData('inicio_evento');
				$data_final = $this->Data->getData('fim_evento');
				$file = $texChange->changeTexCoordenacao(
						APP.'Comprovantes'.DS.'comprovante-coord.tex',
						$dado['Usuario']['nome'],
						$dado['Categoria']['nome'],
						$this->Session->read('config.nome_evento'),
						$this->Session->read('config.local_evento'),
						$data_inicio,
						$data_final,
						$coord_id
				);
				$response = $fileVal->sendFile($file);
				unlink($file);
				if($response['status'] == 'OK'){
					$this->CoordenadorTrabalho->id = $coord_id;
					$this->CoordenadorTrabalho->saveField('comprovante', $response['message']);
					$this->redirect('comprovante_de_coordenacao/' . $coord_id);
				}
				else{
					$this->log('FILE VALIDATION: '.$response['message']);
					echo $this->Session->setFlash(__('Erro ao gerar seu comprovante! Por favor, entre em contato com a administração'), 'flash/bootstrap', array('class'=>'alert alert-error'));
					$this->redirect('/inscricao');
				}
			}
			else{
				$file = $fileVal->getFile($dado['CoordenadorTrabalho']['comprovante']);
				$this->response->body($file);
				$this->response->type('pdf');
					
				//Optionally force file download
				$this->response->download('Certificado-Coordenacao-Trabalho-'.$coord_id.'.pdf');
					
				// Return response object to prevent controller from trying to render
				// a view
				return $this->response;
			}
		}
		else{
			$this->notAuth();
			$this->redirect('/inscricao');
		}
	}
}
